Internet Service Providers (ISPs) have three basic models for charging customers for providing access to the Internet. The first model charges a flat monthly fee for “unlimited” usage (also referred to as a flat-fee business model). This model is commonly employed by ISPs, such as America On Line (AOL) and Earthlink, to charge for their dial-up connection services.
In the second model, a customer is charged by connect time. Wireless carriers or wireless ISPs, especially in Europe and Asia, commonly use this model. However, the connect time is impacted by network load and network speed, which are not under a customer's control. For example, when the network is congested, the network speed decreases, and it would take much longer, for example, for the customer to transfer a file than when the network is less busy. In this regard, customers are being penalized for a congested network since the customer is charged solely based on connect time and not on the amount of data transferred or actual usage of the network. However, many customers would rather pay for the actual services received instead of paying for the connect time. Consequently, this billing model may not be attractive to customers.
A third model charges a customer based on usage of the network (also referred to as a pay-per-use business model). For example, the third model charges a customer based on the number of packets that are received or sent through the ISP network. Both the customer and the ISP may prefer the third model. From the customer's point of view, one benefit is that the customer pays only for the usage of the network. In this manner, the cost for use of the network is more fairly allocated to the users, where those users that heavily use the network pay a greater fee, and those users that use the network less, pay a smaller fee. From the ISP's point of view, one benefit is that the ISP can use the pay-per-use business model to more efficiently allocate bandwidth and resources.
Unfortunately, although the pay-per-use business model is intuitive to understand, the pay-per-use business model is difficult to implement. Specifically, the implementation of the pay-per-use business model poses difficult technical problems. One of these problems or challenges is called the producer-consumer problem. The producer-consumer problem exists when the number of packets generated exceeds the number of packets that can be consumed or processed.
When billing a customer with a pay-per-use model, the number of packets that are sent or received by the customer must be calculated. However, as can be appreciated, there may be many thousands of packets that are received from the network every minute. In this regard, the network must both deliver the packets to the end-user and process the packets to bill the end-user's account. It is desirable that the processing required for maintaining an end-user's account not affect network performance. Furthermore, it is desirable that the processing for the user account not drop packets in the event that the accounting process is unable to keep up with the network packet flow. Otherwise, when packets are dropped, the user is improperly billed for his/her usage.
For example, using current technology, it is predicted that 20% or more of the packets that are received from the network will be lost or dropped while trying to process the packets for accounting purposes. Any packet loss would not be acceptable for an application that bills a customer based on the usage or amount of traffic. Accordingly, a mechanism for counting packets that has a zero packet loss would be desirable.
Based on the foregoing, there remains a need for a method and system for metering packets in a network that has zero packet loss and that overcomes the disadvantages of the prior art as set forth previously.